Chod hore
Predchádzajúca stránka Nasledujúca stránka Začiatok kapitoly Koniec kapitoly Začiatok kurzu Koniec kurzu


6.9 Priraďovací príkaz


Pri priraďovaní určujeme hodnotu niektorej premennej. Premenná stojí na ľavej strane a priraďuje sa jej hodnota určená pravou stranou príkazu. Znakom priradenia je := (nech sa rovná):

Premenná := Výraz ;

resp. z nášho príkladu

Celkovo := Norma*PocetDeti ;

Keďže typ premennej na ľavej strane je reálne číslo, na pravej strane môže byť iba aritmetický výraz. Aritmetický výraz pozostáva z číselných premenných, z čísiel a z aritmetických operátorov. Aritmetické operátory sú:

  • + sčítanie
  • - odčítanie
  • * násobenie
  • / delenie

V prípade sčítania, odčítania a násobenia výsledok je celé číslo, ak takými sú hodnoty na oboch stranách. Ak niektoré bolo reálne, tak potom aj výsledok je reálne číslo. Pozor! V prípade delenia (/) výsledok je vždy reálne číslo.

Priraďovanie sa uskutočňuje nasledujúcim spôsobom: najprv sa podľa daných pravidiel vyhodnotí výraz na pravej strane a potom táto hodnota sa priradí tej premennej, ktorá stojí na ľavej strane priraďovacieho príkazu.

Treba si uvedomiť, že priorita vykonávania jednotlivých operácií je nasledovná:

  • najprv sa vyhodnotia výrazy v zátvorkách
  • potom násobenie alebo delenie (majú rovnakú prioritu)
  • nakoniec sčítanie alebo odčítanie (majú rovnakú prioritu)

To, čo má vyššiu prioritu sa vykoná najprv. Ak idú za sebou operácie s rovnakou prioritou, potom sa vykonávajú v poradí zľava doprava.

PocetDeti := 55 ;
PocetDeti := PocetDeti + 1 ;


V prvom prípade nezávisle od toho aká bola hodnota premennej PocetDeti pred týmto príkazom, teraz bude 55. V druhom prípade k predchádzajúcej hodnote tejto premennej sa pridá 1 a táto zväčšená hodnota sa priradí tej istej premennej - teda bude 56.

Treba si uvedomiť, že pri deklarácii premennej ešte sme jej nepriradili žiadnu hodnotu. Po štarte programu každej premennej bude priradená časť pamäte príslušnej veľkosti. Ak tam niečo už predtým bolo - bude to hodnotou našej premennej. Z toho vyplýva, že každej premennej musíme priradiť hodnotu pred tým, než ju použijeme vo výpočte. V opačnom prípade sa môžeme nemylo prekvapiť.



6.10 Volanie podprogramu


Volanie podprogramu znamená odvolať sa na už napísaný úsek programu. Odvolaním sa na identifikátor (názov) podprogramu - ten sa vykoná. Takým je napr. príkaz ReadLn(PocetDeti), pomocou ktorého môžeme zadať hodnoty. Tento proces je pomerne zložitý - vďaka dobrej práce programátorov firmy Borland - my sa o tvorbu tohto podprogramu nemusíme starať a len ju používať. Podprogram môže mať parametre, ktoré musíme uviesť za identifikátorom podprogramu v zátvorke oddelené od seba čiarkou. Každý podprogram môže mať iné parametre, ktoré musia byť uvedené v jeho popise.

Všeobecný tvar volania podprogramu má nasledujúci tvar:

Identifikátor-podprogramu[(aktuálny zoznam parametrov)]

Hranaté zátvorky označujú, že nie je povinné uviesť zložky (sú prípady, keď to podstatne využívame) - zoznam môže byť prázdny.
Príklad volania podprogramu z nášho vzorového príkladu:

WriteLn(PocetDeti, '*',Norma:4:1, ' kg =',Celkovo:5:1, ' kg') ;

Prvky zoznamu sú: PocetDeti, potom '*' atď - všetky sú navzájom oddelené čiarkou.



6.11 Zadávanie údajov


Read[(identifikátor-premennej)]
ReadLn[(identifikátor-premennej)]

Tieto podprogramy môžu mať aj viacero parametrov a môžeme ich použiť aj bez parametrov - v tomto prípade sa bude čakať na stlačenie klávesy ENTER.

Ako vidíme parametrami týchto podprogramov môžu byť iba identifikátory premenných. Kým nestlačíme klávesu ENTER napísané znaky sa zobrazia na obrazovke a môžeme ich opravovať (napr. BACKSPACE maže predchádzajúci znak pred kurzorom, ESC maže všetky doteraz napísané znaky atď.

Tieto príkazy zadávané znaky dočasne ukladajú do bufra klávesnice, kam sa zmestí maximálne 127 znakov. Viac znakov odmietne spracovať - pri takom pokuse počítač dá zvukový signál. Ak v zozname je viacero zložiek, potom zadaný text sa spracuje podľa daných pravidiel a patričné hodnoty sa priraďujú jednotlivým prvkom v zozname. Ako oddelovač údajov slúži medzera, TAB, prechod na nový riadok. Nerozlišuje sa ich počet. Celá taká skupina sa chápe ako jeden znak. Ak sa niektorým prvkom zoznamu sa nepriradila hodnota, potom príkaz bude očakávať ďalší vstup, až kým nepriradíme každej zložke hodnotu. Ak hodnota nezodpovedá typu premennej - počítač ukončí prácu s chybovým hlásením.

Príkaz ReadLn sa v tom líši od príkazu Read, že vyčistí obsah bufra klávesnice. Ak sa bufer nevyčistí, potom ďalší príkaz Read resp. ReadLn automaticky začne spracovávať údaje z bufra a nečaká na nový vstup.

Príkaz ReadLn(idantifikátor-premennej) je ekvivalentný nasledujúcim dvom príkazom:

Read(identofokátor-premennej) ;
ReadLn ;

Nedoporučujeme používať príkaz Read (len v odôvodnených prípadoch) a príkaz ReadLn s viacerými premennými pri načítavaní z klávesnice (vždy je dobré, ak pred vstupom dostaneme informáciu že, akú hodnotu od nás program očakáva).



6.12 Zobrazovanie na obrazovke


Write[(výraz, [(výraz…])]
WriteLn[(výraz, [(výraz…])]

Na obrazovku môžeme vypísať informáciu pomocou týchto príkazov Write a WriteLn. Rozdiel medzi nimi je ten, že druhý (Write Line) na konci výpisu posunie riadok, t.j. kurzor sa posunie na začiatok nasledujúceho riadku. Tieto príkazy zobrazujú údaje v takom poradí ako sú napísané.

Kurzor sa vždy nachádza na obrazovke (ak ho nevidíme, to znamená, že je nezobrazovaný - skrytý).
V našom vzorovom príklade napr. príkaz

WriteLn(PocetDeti, '*',Norma:4:1, ' kg =',Celkovo:5:1, ' kg') ;

Je rovnocenný nasledujúcim 7 príkazom:

Write(PocetDeti) ;
Write('*') ;
Write(Norma:4:1) ;
Write(' kg =') ;
Write(Celkovo:5:1) ;
Write(' kg') ;
WriteLn ;

V prípade výpisu číselnej hodnoty na obrazovku, ak nezadáme spôsob výpisu, systém sám sa rozhodne v akom tvare zobrazí danú hodnotu. V prípade celého čísla rozhodujúcim je dĺžka reťazca do ktorého sa zobrazí dané číslo. V prípade reálneho čísla - zobrazovanie je v plávajúcej desatinnej čiarke. Napr.:

reálnemu číslu 198.5 zodpovedá tvar 1.98500000000000E+0002

Pri výpise ľubovolného objektu môžeme zadať celkovú dĺžku. Ak objekt je kratší, potom sa doplní výpis o patričný počet medzier zľava. Ak objekt je dlhší, potom sa vypíše celý - neberie sa ohľad na našu požiadavku. Celková dĺžka sa zadáva tak, že za objekt napíšeme dvojbodku a hodnotu celkovej dĺžky. Ak objektom výpisu je reálne číslo, potom môžeme zadať navyše aj počet desatinných miest. Ak číslo, ktoré sa vypisuje má viac desatinných miest, potom sa zaokrúhli na požadovaný počet desatinných miest. Ak má menej desatinných miest, potom sa doplní nulami. Celá časť sa vždy vypíše celá. Nech PocetDeti = 3 a Norma = 10.5, potom:

Obr6_2

Pomocou príkazu Write a WriteLn môžeme zobrazovať nie len hodnoty premenných a konštánt ale aj ľubovolných výrazov. Výpis sa uskutočňuje tak, že najprv sa výraz vyhodnotí a výsledok sa vypíše.

Poznamenávame, že ak napíšeme niečo do poslednej pozície v poslednom riadku obrazovky, potom dôjde k rolovaniu obrazovky. To znamená, že všetky riadky obrazovky sa posunú o jeden riadok dohora, tým sa prvý riadok stratí a vytvorí sa v dolnom riadku jeden nový prázdny riadok, do ktorého sa presunie kurzor.

Ak počítač má štandardné nastavenie, potom obrazovka má 25 riadkov a 80 stĺpcov, teda zobraziť môžeme 80*25 znakov. Štandardné nastavenie je svetlosivé znaky na čiernom pozadí.

Číslovanie riadkov ide od prvého horného riadku a číslovanie stĺpcov zľava doprava. Číslovanie sa vždy začína jednotkou. Teda obrazovka má nasledovný tvar:

Obr6_3

V našom prípade hodnoty boli nasledujúce: PocetDeti = 56, Norma = 0.4 a Celkovo = 22.4.
Na obrazovke sa objaví výpis v nasledujúcom tvare:

Obr6_4

Teraz uvedieme niekoľko príkazov na prácu s obrazovkou:

GotoXY(Xpoz,Ypoz)
Umožňuje premiestniť kurzor na danú pozíciu na obrazovke. XPoz je celé číslo od 1 po 80 a YPoz je celé číslo od 1 po 25. GotoXY(1,1) presunie kurzor do ľavého horného rohu obrazovky a GotoXY(80,25) do dolného pravého rohu.

ClrScr
Príkaz ClrScr (Clear Screen) slúži na vyčistenie obrazovky. Obrazovka po tomto príkaze bude prázdna a kurzor sa bude nachádzať v hornom ľavom rohu obrazovky.

ClrEol
Príkaz ClrEol (Clear End of line) slúži na zrušenie obsahu daného riadku od pozície kurzora až do konca.

Pozor! Tieto príkazy GotoXY, ClrScr a ClrEol nepatria medzi základné príkazy Turbo Pascalu. Základné príkazy, ako napr. Read a Write, sa nachádzajú v tzv. jednotke System, ktorá sa automaticky pripája k nášmu programu. Príkazy pre prácu s obrazovkou sa nachádzajú v jednotke Crt. Ak ľubovolný z nich chceme použiť, potom jednotku Crt musíme pripojiť k nášmu programu. Pripájanie jednotky Crt sa vykonáva nasledujúcim príkazom:

Uses Crt ;

Poznámka. Ak nepripojíme k nášmu programu jednotku Crt (je to súbor relatívnych adries), potom systém ukončí prácu s nasledujúcim chybovým hlásením:

Error 15: File not found (CRT.TPU)

Úloha
Zobrazme 3 hviezdičky v každom rohu obrazovky!

Poznámka. Aby sa obsah obrazovky neposunul, posledný stĺpec nepoužite

Obr6_5